<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>

        // promise 本身是同步的 
        //  then是异步的  

        // 异步
        //   宏任务   setTimeout / setInterval
        //   微任务   then     紧急任务



        //  同步
        //   查找是否存在需要立即执行的微任务
        //   走宏任务
        //   查找是否存在需要立即执行的微任务
        //   

        // script 本身就是一个宏任务




        // 预编译
        // 作用域
        // 同步和异步



        // const p = new Promise((resolve , reject) => {
        //     console.log(1);
        //     reject(5);
        // })

        // setTimeout(() => {
        //     console.log(3);
        // })

        // p.catch(data => {
        //     console.log(data);
        // })

       

        // console.log(2);

        // 1 2 5 3







        const p = new Promise((resolve , reject) => {
            console.log(1);
            setTimeout(()=>{
                reject(5);
            },100)
        })

        setTimeout(() => {
            console.log(3);
        })

        p.catch(data => {
            console.log(data);
        })

        setTimeout(()=> {
            console.log(4);
        },100)

       

        console.log(2);


    </script>
    
</body>
</html>